#!/bin/bash

# HTTP 代理配置脚本
# 注意: 此脚本需要使用 source 命令执行才能在当前 shell 中生效
# 用法: source ./http_proxy.sh [set|unset] [proxy_url]
# 或:    . ./http_proxy.sh [set|unset] [proxy_url]

show_help() {
    echo "HTTP 代理配置脚本"
    echo "用法:"
    echo "  source ./http_proxy.sh set [proxy_url]    - 设置 HTTP 代理"
    echo "  source ./http_proxy.sh unset              - 取消 HTTP 代理"
    echo "  source ./http_proxy.sh show               - 显示当前代理设置"
    echo "  source ./http_proxy.sh help               - 显示帮助信息"
    echo ""
    echo "示例:"
    echo "  source ./http_proxy.sh set http://127.0.0.1:7890"
    echo "  source ./http_proxy.sh unset"
    echo ""
    echo "注意: 必须使用 source 命令执行此脚本，否则代理设置不会在当前会话中生效"
}

show_current_proxy() {
    echo "当前 HTTP 代理设置:"
    echo "http_proxy:  $http_proxy"
    echo "https_proxy: $https_proxy"
    echo "HTTP_PROXY:  $HTTP_PROXY"
    echo "HTTPS_PROXY: $HTTPS_PROXY"
}

set_proxy() {
    local proxy="$1"
    
    if [ -z "$proxy" ]; then
        # 使用默认代理地址
        proxy="http://127.0.0.1:7890"
        echo "使用默认代理: $proxy"
    fi
    
    # 设置小写和大写环境变量（两者都设置是常见做法）
    export http_proxy="$proxy"
    export https_proxy="$proxy"
    export HTTP_PROXY="$proxy"
    export HTTPS_PROXY="$proxy"
    
    echo "HTTP 代理已设置为 $proxy"
}

unset_proxy() {
    unset http_proxy
    unset https_proxy
    unset HTTP_PROXY
    unset HTTPS_PROXY
    echo "HTTP 代理设置已移除"
}

# 主程序
case "$1" in
    set)
        set_proxy "$2"
        ;;
    unset)
        unset_proxy
        ;;
    show)
        show_current_proxy
        ;;
    help|--help|-h)
        show_help
        ;;
    *)
        if [ -z "$1" ]; then
            show_help
        else
            echo "未知命令: $1"
            show_help
        fi
        ;;
esac

# 显示当前设置
show_current_proxy 